package com.hsyt.pfc.support.util;

import java.util.regex.Pattern;

/**
 * @Description: 数据格式校验工具类
 * @ClassName: DataFormatVaildate.java
 * @Package: com.hundsun.rmc.portal.util
* @Author: wangze@hsyuntai.com
 * @Date: 2014年7月27日 上午10:15:45
 * @Copyright: 版权归 HundSun 所有
 */
public class DataFormatVaildate {

    /**
     * @param phone 手机字符串
     * @return
     * @Description: 校验手机号码
    * @Author: wangze@hsyuntai.com
     * @Date: 2014年7月27日 上午10:15:59
     */
    public static boolean vaildPhone(String phone) {
        if (StringUtils.isEmpty(phone) || phone.length() != 11)
            return false;
        Pattern p = Pattern.compile("(^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\\d{8}$)|(^((166[0-9])|(198[0-9])|(199[0-9]))\\d{7}$)");
//		Pattern newP = Pattern.compile("^((166[0-9])|(198[0-9])|(199[0-9]))\\d{7}$");
        return p.matcher(phone).matches();
    }

    /**
     * @param num 数字字符串
     * @param bit 位数(1~11位)
     * @return
     * @Description: 校验是否数字，多少位
    * @Author: wangze@hsyuntai.com
     * @Date: 2014年7月27日 上午10:16:08
     */
    public static boolean vaildNum(String num, int bit) {
        if (bit < 1 || bit > 11)
            return false;
        String patternStr = "^[0-9]{" + bit + "}$";
        Pattern p = Pattern.compile(patternStr);
        return p.matcher(num).matches();
    }

    /**
     * @param mail 邮箱地址字符串
     * @return
     * @Description: 校验邮箱
    * @Author: wangze@hsyuntai.com
     * @Date: 2014年7月27日 上午10:16:58
     */
    public static boolean vaildEmail(String mail) {
        if (StringUtils.isEmpty(mail))
            return false;
        Pattern p = Pattern.compile("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$");
        return p.matcher(mail).matches();
    }

    /**
     * @param content
     * @return
     * @Description: 校验内容，并返回长度，中文占2位
    * @Author: wangze@hsyuntai.com
     * @Date: 2014年7月27日 下午2:41:54
     */
    public static int vaildLength(String content) {
        if (StringUtils.isEmpty(content))
            return 0;
        String regexLength = "[^\\x00-\\xff]";
        return content.replaceAll(regexLength, "**").length();
    }

    public static boolean vaildPwd(String password) {
        Pattern p = Pattern.compile("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,15}$");
        return p.matcher(password).matches();
    }

    /**
     * @param password
     * @param min
     * @param max
     * @return
     * @Description: 匹配字母、数字，长度，可以全部为数字，或者全部为字母
     * @Author: wangyl13616@hundsun.com
     * @Date: 2015年4月22日 下午5:00:45
     */
    public static boolean vaildPassword(String password, int min, int max) {
        if (min == 0 || max == 0 || min >= max)
            return false;
        Pattern p = Pattern.compile("^[0-9A-Za-z]{" + min + "," + max + "}$");
        return p.matcher(password).matches();
    }

    /**
     * @param str
     * @return
     * @Description: 只含有汉字、数字、字母、下划线不能以下划线开头和结尾 长度限制在24个字符以内
     * @Author: wangyl13616@hundsun.com
     * @modify @ehomeud 表达式修改..并添加长度校验
     * @Date: 2015年4月22日 下午5:00:45
     */
    public static boolean vaildCommonString(String str) {
        Pattern p = Pattern.compile("^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]{1,24}$");
        return p.matcher(str).matches();
    }

    public static boolean vaildPwd(String password, int min, int max) {
        if (min == 0 || max == 0 || min >= max)
            return false;
        Pattern p = Pattern.compile("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{" + min + "," + max + "}$");
        return p.matcher(password).matches();
    }

    public static boolean vaildPhoneLocal(String location) {
        if (StringUtils.isNotBlank(location) && location.length() > 16 && location.indexOf(",") > 0) {
            String[] latlng = location.split(",");
            Double lat = Double.parseDouble(latlng[0]);
            Double lon = Double.parseDouble(latlng[1]);
            if (latlng.length == 2 && lat > 0 && lat < 90 && lon > 0 && lon < 180) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
/*		String aa="_wewe胡仁德";
		String bb="sdsd";
		String cc="胡仁德";
		String dd="胡仁德_";
		String ee ="_sdsd_";
		String ff="hsdsd胡仁德";
		String kk="a";
		String hh="sdsssssssssssssssssssssssssssssssssssssssss胡仁德胡仁德胡仁德胡仁德胡仁德胡仁德sssssss胡仁德sssssssssssssss";
		System.out.println(vaildCommonString(aa));
		System.out.println(vaildCommonString(bb));
		System.out.println(vaildCommonString(cc));
		System.out.println(vaildCommonString(dd));
		System.out.println(vaildCommonString(ee));
		System.out.println(vaildCommonString(ff));
		System.out.println(vaildCommonString(kk));
		System.out.println(vaildCommonString(hh));*/

        System.out.println(vaildPhone("16600000000"));
        System.out.println(vaildPhone("16700000000"));
        System.out.println(vaildPhone("19700000000"));
        System.out.println(vaildPhone("19800000000"));
        System.out.println(vaildPhone("19800000000"));
    }

    /**
     * @param @param  unicode
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: vaildStringLength
     * @Description: 验证unicode长度
     */
    public static boolean vaildUnicodeLength(String unicode) {
        Pattern p = Pattern.compile("^[0-9A-Za-z]{32}$");
        return p.matcher(unicode).matches();
    }


    /**
     * @param @param  unicode
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: vaildStringLength
     * @Description: 验证unicode长度35位
     */
    public static boolean vaildwebUnicodeLength(String unicode) {
        Pattern p = Pattern.compile("^[0-9A-Za-z]{35}$");
        return p.matcher(unicode).matches();
    }

    /**
     * @param @param  unicode
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: vaildStringLength
     * @Description: 验证clientId格式
     */
    public static boolean validClientId(String clientId) {
        Pattern p = Pattern.compile("^\\d{6}@[a-zA-Z0-9]{1,64}$");
        return p.matcher(clientId).matches();
    }


    /**
     * 校验正整数
     *
     * @param num
     * @return
     * @author 王勇琳
     * @date 2015年9月14日 上午11:45:22
     */
    public static boolean vaildPositiveNum(String num) {
        if (StringUtils.isBlank(num))
            return false;
        num = num.trim();
        Pattern p = Pattern.compile("^[1-9]\\d*$");
        return p.matcher(num).matches();
    }


}
